package cn.slipi.message.controller;

import cn.slipi.facade.api.message.MessageFacade;
import cn.slipi.facade.api.message.form.MessageForm;
import cn.slipi.message.biz.MessageBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 独立消息服务接口
 */
@RestController
public class MessageController implements MessageFacade {
    @Autowired
    private MessageBiz messageBiz;

    /**
     * 预发送
     * 主动者执行本地业务之前记录消息，并标记消息状态为待发送
     * 此时消息并未发送到MQ中，而是在数据库中保存一条消息记录
     *
     * @param messageForm
     */
    @Override
    public void prepareMessage(@RequestBody MessageForm messageForm) {
        this.messageBiz.prepareMessage(messageForm);
    }

    /**
     * 确认发送
     * 主动者执行完本地业务，通知消息服务将待发送的消息发送到MQ并修改状态为已发送
     *
     * @param objId
     */
    @Override
    public void confirmMessage(@RequestParam("objId") String objId) {
        this.messageBiz.confirmMessage(objId);
    }


    /**
     * 完成消息
     * 被动者完成本地事务后调用
     *
     * @param objId
     */
    @Override
    public void completeMessage(@RequestParam("objId") String objId) {
        this.messageBiz.completeMessage(objId);
    }
}
